Upgrade FATFS 0.14 to R0.16, various improvements and bugfixes #2997
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Upgrade FATFS R0.14 (2025-10-14) to R0.16 (2025-07-22)
R0.16 Jul 22, 2025
Removed a long-pending limitation that f_getcwd and double-dot ".." in the path name did not work on the exFAT volume. Fixed f_readdir cannot detect end of directory and it leads the application process into infinite loop. (appeared at R0.15b) Fixed dot names with terminating separator or duplicated separator are rejected when LFN is not enabled.
R0.15b Jun 21, 2025
Added support for the timestamp of created time. (FF_FS_CRTIME) Fixed FatFs fails to load the FsInfo in FAT32 volumes and the f_getfree always be forced a full FAT scan which takes a long time. (appeared at R0.15a)
R0.15a Nov 22, 2024
Fixed a complie error when FF_FS_LOCK != 0. (appeared at R0.15) Fixed a potential issue when work FatFs concurrency with FF_FS_REENTRANT, FF_VOLUMES >= 2 and FF_FS_LOCK > 0. Made f_setlabel accept a volume label with Unix style volume ID when FF_STR_VOLUME_ID == 2. Made FatFs update PercInUse field in exFAT VBR. (A preceding f_getfree is needed for the accuracy)
R0.15 Nov 6, 2022
Changed user provided synchronization functions in order to completely eliminate the platform dependency from FatFs code. Fixed a potential error in f_mount when FF_FS_REENTRANT. Fixed file lock control FF_FS_LOCK is not mutal excluded when FF_FS_REENTRANT && FF_VOLUMES > 1 is true. Fixed f_mkfs creates broken exFAT volume when the size of volume is >= 2^32 sectors. Fixed string functions cannot write the unicode characters not in BMP when FF_LFN_UNICODE == 2 (UTF-8). Fixed a compatibility issue in identification of GPT header.
R0.14b Apr 17, 2021
Made FatFs uses standard library string.h for copy, compare and search instead of built-in string functions. Added support for long long integer and floating point to f_printf. (FF_STRF_LLI and FF_STRF_FP) Made path name parser ignores the terminating separator to allow "dir/". Improved the compatibility in Unix style path name feature. Fixed the file gets dead-locked when f_open failed with certain conditions. (appeared at R0.12a) Fixed f_mkfs can create wrong exFAT volume due to a timing dependent error. (appeared at R0.12) Fixed code page 855 cannot be set by f_setcp. (appeared at R0.13) Fixed some compiler warnings.
R0.14a Dec 05, 2020
Limited number of recursive calls in f_findnext to prevent stack overflow. Fixed old floppy disks formatted with MS-DOS 2.x and 3.x cannot be mounted. Fixed some compiler warnings.
Benefits
This solves various issues and improve compatibility of USB keys and SD Cards, especially larger ones as now LBA64 is enabled and the exFAT support is improve.